package com.sss.hloster0104;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class StudentMaster {
	// 属性
	// 学生信息集合对象
	private Student[] arrStus;

	// 行为

	public StudentMaster() {
		super();
		// 调用初始化方法
		init();
	}

	public void showScore() {
		// 初始化
		// init();

		// 排序
		bubbleSort();

		// 打印信息
		printArr();
	}

	// 数据录入行为
	private void init() {
		// 准备数据
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入班级学生人数：");
		// 学生人数
		int count = sc.nextInt();
		// 根据学生人数创建学生数组
		// 此处初始化的是成员变量，而不是局部变量
		arrStus = new Student[count];
		// 添加数据(可以控制台输入)
		for (int i = 0; i < count; i++) {
			// 输入参数
			System.out.println("请输入第" + (i + 1) + "个学生的姓名：");
			String strName = sc.next();
			System.out.println("请输入第" + (i + 1) + "个学生的学号：");
			String strNum = sc.next();
			System.out.println("请输入第" + (i + 1) + "个学生的成绩：");
			double fScore = sc.nextDouble();
			// 根据输入的参数，构建一个学生对象实例
			Student stu = new Student(strName, strNum, fScore);
			// 把创建的学生对象，放到学生数组中
			arrStus[i] = stu;
		}
	}

	// 排序行为
	/**
	 * 冒泡排序算法[从小到大]--优化
	 * 
	 * @param arrStus 被排序的数组
	 */
	public void bubbleSort() {
		// 将数组转换为List对象
		List lstStus = Arrays.asList(arrStus);

		// 提供Student比较器
		Collections.sort(lstStus, new StudentComparator());

		// 将list转换为数组
		arrStus = (Student[]) lstStus.toArray();
	}

	// 学生信息输出行为
	/**
	 * 打印数组
	 * 
	 * @param arr
	 */
	public void printArr() {
		for (Student i : arrStus) {
			i.printMe();
		}
		// 换行
		System.out.println();
	}
}
